#ifndef SQLGENERATOR_H
#define SQLGENERATOR_H

#include <QString>
#include <QVariantMap>
#include <QStringList>
#include <QVariant>

/**
 * @brief SQL语句生成工具类
 * 仅对条件语句进行SQL注入防护
 */
class SqlGenerator
{
public:
    /**
     * @brief 生成创建数据表的SQL语句
     */
    static QString generateCreateTable(const QString& tableName,
                                      const QVariantMap& fields,
                                      const QString& primaryKey = "");

    /**
     * @brief 生成插入记录的SQL语句
     */
    static QString generateInsert(const QString& tableName, const QVariantMap& data);

    /**
     * @brief 生成更新记录的SQL语句
     */
    static QString generateUpdate(const QString& tableName,
                                 const QVariantMap& data,
                                 const QString& conditions = "");

    /**
     * @brief 生成删除记录的SQL语句
     */
    static QString generateDelete(const QString& tableName, const QString& conditions = "");

    /**
     * @brief 生成查询记录的SQL语句
     */
    static QString generateSelect(const QString& tableName,
                                 const QStringList& fields = QStringList(),
                                 const QString& conditions = "",
                                 const QString& orderBy = "",
                                 int limit = -1);

    /**
     * @brief 仅对WHERE条件中的值进行SQL注入防护
     */
    static QString sanitizeCondition(const QString& condition);

private:
    // 私有构造函数，防止实例化
    SqlGenerator() = default;
    // 禁止拷贝和赋值
    SqlGenerator(const SqlGenerator&) = delete;
    SqlGenerator& operator=(const SqlGenerator&) = delete;
};

#endif // SQLGENERATOR_H
